document.addEventListener('DOMContentLoaded', function() {
    const mediaUpload = document.getElementById('mediaUpload');
    const mediaPreviewContainer = document.getElementById('mediaPreviewContainer');
    const cancelBtn = document.getElementById('cancelBtn');
    const publishBtn = document.getElementById('publishBtn');
    
    // 存储上传的媒体文件
    let uploadedFiles = [];
    
    // 处理媒体文件选择
    mediaUpload.addEventListener('change', function(e) {
        const files = Array.from(e.target.files);
        
        files.forEach(file => {
            // 检查文件类型
            if (!file.type.match('image.*') && !file.type.match('video.*')) {
                alert('请上传图片或视频文件');
                return;
            }
            
            // 检查文件大小（限制200MB）
            if (file.size > 200 * 1024 * 1024) {
                alert('文件大小不能超过200MB');
                return;
            }
            
            uploadedFiles.push(file);
            createMediaPreview(file);
        });
        
        // 清空input，允许选择相同的文件
        this.value = '';
    });
    
    // 创建媒体预览
    function createMediaPreview(file) {
        const reader = new FileReader();
        
        reader.onload = function(event) {
            const previewItem = document.createElement('div');
            previewItem.className = 'media-preview-item';
            
            if (file.type.match('image.*')) {
                previewItem.innerHTML = `
                    <img src="${event.target.result}" alt="预览图片">
                    <button class="remove-media-btn">×</button>
                `;
            } else if (file.type.match('video.*')) {
                previewItem.innerHTML = `
                    <video src="${event.target.result}" controls></video>
                    <button class="remove-media-btn">×</button>
                `;
            }
            
            mediaPreviewContainer.appendChild(previewItem);
            
            // 添加删除按钮事件
            const removeBtn = previewItem.querySelector('.remove-media-btn');
            removeBtn.addEventListener('click', function() {
                const index = uploadedFiles.indexOf(file);
                if (index > -1) {
                    uploadedFiles.splice(index, 1);
                }
                previewItem.remove();
            });
        };
        
        reader.readAsDataURL(file);
    }
    
    // 取消按钮事件
    cancelBtn.addEventListener('click', function() {
        if (confirm('确定要取消发布吗？已输入的内容将丢失。')) {
            window.location.href = '/';
        }
    });
    
    // 发布按钮事件
    publishBtn.addEventListener('click', function() {
        const title = document.getElementById('postTitle').value.trim();
        const content = document.getElementById('postContent').value.trim();
        const visibility = document.getElementById('visibility').value;
        
        // 获取选择的分类
        const categorySelect = document.getElementById('postCategory');
        const category = categorySelect ? categorySelect.value : 'OTHER'; // 默认分类为OTHER
    
        // 验证表单
        if (!title) {
            alert('请输入帖子标题');
            return;
        }
    
        if (!content && uploadedFiles.length === 0) {
            alert('请输入帖子内容或上传媒体文件');
            return;
        }
    
        // 创建FormData对象
        const formData = new FormData();
    
        // 添加帖子信息
        const postData = {
            title: title,
            content: content,
            status: visibility === 'PUBLIC' ? 'PUBLISHED' : 'DRAFT',
            category: category // 添加分类信息
        };
        
        formData.append('post', new Blob([JSON.stringify(postData)], { type: 'application/json' }));
        
        // 添加媒体文件
        uploadedFiles.forEach((file, index) => {
            if (file.type.match('video.*')) {
                formData.append('video', file);
                // 如果是第一个视频，还需要生成封面
                if (index === 0) {
                    // 这里可以添加逻辑来生成视频封面
                    // 简化处理，暂时不生成封面
                }
            } else {
                formData.append('images', file);
            }
        });
        
        // 发送请求
        fetch('/api/posts', {
            method: 'POST',
            body: formData
        })
        .then(response => {
            if (!response.ok) {
                throw new Error('发布失败');
            }
            return response.json();
        })
        .then(data => {
            if (data.success) {
                alert('发布成功');
                window.location.href = '/'; // 修改为重定向到首页
            } else {
                alert('发布失败: ' + data.message);
            }
        })
        .catch(error => {
            console.error('发布请求失败:', error);
            alert('发布请求失败，请重试');
        });
    });
    
    // 添加拖拽上传功能
    const mediaUploadSection = document.querySelector('.media-upload-section');
    
    mediaUploadSection.addEventListener('dragover', function(e) {
        e.preventDefault();
        this.classList.add('drag-over');
    });
    
    mediaUploadSection.addEventListener('dragleave', function() {
        this.classList.remove('drag-over');
    });
    
    mediaUploadSection.addEventListener('drop', function(e) {
        e.preventDefault();
        this.classList.remove('drag-over');
        
        const files = Array.from(e.dataTransfer.files);
        files.forEach(file => {
            // 检查文件类型
            if (!file.type.match('image.*') && !file.type.match('video.*')) {
                alert('请上传图片或视频文件');
                return;
            }
            
            // 检查文件大小（限制200MB）
            if (file.size > 200 * 1024 * 1024) {
                alert('文件大小不能超过200MB');
                return;
            }
            
            uploadedFiles.push(file);
            createMediaPreview(file);
        });
    });
});

// 页面加载后，获取所有分类并填充到下拉框
function loadCategories() {
    const categorySelect = document.getElementById('postCategory');
    if (!categorySelect) {
        return; // 如果没有分类选择框，直接返回
    }
    
    // 发送请求获取所有分类
    fetch('/api/categories')
        .then(response => {
            if (!response.ok) {
                throw new Error('获取分类失败');
            }
            return response.json();
        })
        .then(data => {
            if (data.success && data.data) {
                // 清空现有选项
                categorySelect.innerHTML = '';
                
                // 添加分类选项
                data.data.forEach(category => {
                    const option = document.createElement('option');
                    option.value = category.name;
                    option.textContent = category.displayName;
                    // 默认选中'OTHER'
                    if (category.name === 'OTHER') {
                        option.selected = true;
                    }
                    categorySelect.appendChild(option);
                });
            }
        })
        .catch(error => {
            console.error('获取分类列表失败:', error);
            // 如果获取分类失败，添加默认分类选项
            const defaultOption = document.createElement('option');
            defaultOption.value = 'OTHER';
            defaultOption.textContent = '其他';
            categorySelect.appendChild(defaultOption);
        });
}

// 在DOM加载完成后调用loadCategories函数
loadCategories();